package com.test.source;

import java.util.Properties;

/**
 * 一个专门提供系统属性的属性源类。
 * 该类继承自PropertySource，封装了对系统属性的访问。
 */
public class SystemPropertySource extends PropertySource<Properties> {

    // 定义系统属性源名称的常量
    public static final String SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME = "systemProperties";

    /**
     * 使用指定名称构造SystemPropertySource对象。
     *
     * @param name 属性源的名称
     */
    public SystemPropertySource(String name) {
        super(name, System.getProperties());
    }

    /**
     * 使用默认名称构造SystemPropertySource对象。
     * 该构造函数使用预定义的常量SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME作为名称。
     */
    public SystemPropertySource() {
        super(SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, System.getProperties());
    }

    /**
     * 获取指定属性的值。
     *
     * @param name 要获取的属性名称
     * @return 属性的值，如果未找到则返回null
     */
    @Override
    public Object getProperty(String name) {
        return this.source.getProperty(name);
    }
}
